jQuery(function($) {

  //加载 jQuery 工具插件.
  $.extend({
    /**
  	 * 获取URL参数.
  	 * @param key.
  	 * @return val || json.
  	 */
  	getParam: function(key) {
  		var json = {}, data;
  		$.each(location.search.substr(1).split("&"), function(i, n) {
  			data = n.split("=");
  			json[data[0]] = data[1];
  		});
  		return key != undefined ? json[key] : json;
  	}
  });

  console.log($.fn.jquery);

  //alert(location.search);

  console.log( $.getParam() );

  /**
   * 应用微信接口配置.
   */
  function wxInit() {

    $.getJSON('/getticket', {
      "url": location.href.split('#')[0]
    }).then(function(json) {
      var wxConfig = {};

			wxConfig['appId'] = json.appId;
			wxConfig['nonceStr'] = json.nonceStr;
			wxConfig['signature'] = json.signature;
			wxConfig['timestamp'] = json.timestamp;

      //启用的微信接口.
      wxConfig['jsApiList'] = [
        'onMenuShareTimeline',
        'onMenuShareAppMessage',
        'checkJsApi',
        'scanQRCode'
      ];
      //开启调试模式.
      wxConfig['debug'] = true;

      console.log(wxConfig);

      //配置微信接口.
      wx.config(wxConfig);

      wx.ready(function(){
        console.log("wx ready");
        // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
      });
      wx.error(function(res){
        console.log("wx error");
        console.log(res);
        // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
      });
    });

  }

  //初始化微信接口.
  wxInit();

  //锚点改变事件.
  $(window).on("hashchange", function() {
    //获取表单 DOM.
    var form = document.getElementById('share-form');

    //获取锚点.
    var hash = location.hash;

    //判断锚点行为.
    switch (hash) {
      case '#onMenuShareAppMessage':  //分享给朋友.

        console.log({
          title: form.title.value, // 分享标题
          desc: form.desc.value,
          link: form.link.value, // 分享链接
          imgUrl: form.imgUrl.value // 分享图标
        });

        wx.onMenuShareAppMessage({
          title: form.title.value, // 分享标题
          desc: form.desc.value,
          link: form.link.value, // 分享链接
          imgUrl: form.imgUrl.value, // 分享图标
          success: function () {
            //用户确认分享后执行的回调函数
            console.log('用户成功分享');
          },
          cancel: function () {
            //用户取消分享后执行的回调函数
            console.log('用户取消分享');
          },
          fail: function (err) {
            console.log('调用失败');
            console.log(err);
          }
        });
        break;
      case '#onMenuShareTimeline':  //分享到朋友圈.
        wx.onMenuShareTimeline({
          title: form.title.value, // 分享标题
          link: form.link.value, // 分享链接
          imgUrl: form.imgUrl.value, // 分享图标
          success: function () {
            //用户确认分享后执行的回调函数
            console.log(' 用户成功分享');
          },
          cancel: function () {
            //用户取消分享后执行的回调函数
            console.log('用户取消分享');
          }
        });
        break;
      case '#scanQRCode':  //扫一扫.

        break;
      default:
    }
    return false;
  });

});
